﻿

DROP TABLE IF EXISTS consulta, condicional;

CREATE TABLE consulta (
	consultaId	serial NOT NULL CONSTRAINT id_consultakey PRIMARY KEY,
	nome_consulta	varchar(100) UNIQUE NOT NULL,
	descricao	text NOT NULL,
	pre_script	text NOT NULL,
	pos_script	text NOT NULL
);

CREATE TABLE condicional (
	id_consulta	serial NOT NULL references consulta(consultaId),
	nome		varchar(30) NOT NULL,
	tag_html	varchar(30) NOT NULL,
	condicao	varchar(50) NOT NULL 
);

INSERT INTO consulta (nome_consulta,descricao,pre_script,pos_script) VALUES (
	'Espécies por Locais',
	'números de árvores de determinadas espécie(s) em determinados local(is)',
	'SELECT
	nome_rua AS "Rua",
	nome_especie AS "Espécie"
FROM	arvore,rua,especie WHERE ',
	'AND arvore.id_rua = rua.ruaId AND arvore.id_especie = especie.especieId ');

INSERT INTO condicional (id_consulta,nome,tag_html,condicao) VALUES (
	1,
	'Espécie(s)'
	'especie',
	'especie.nome_especie LIKE @ ');

-- retorna a lista de consultas cadastradas --
CREATE OR REPLACE FUNCTION listarConsultas() RETURNS SETOF record
AS $$
BEGIN
	RETURN QUERY SELECT
		consultaId,
		nome_consulta,
		descricao,
		pre_script,
		pos_script
	FROM consulta;
RETURN;
END; $$ LANGUAGE 'plpgsql' VOLATILE;

-- exemplo de utilização --
SELECT * FROM listarConsultas() AS (id integer, nome varchar(100), descricao text, pre_script text, pos_script text);

-- retorna as condições de uma consulta --
CREATE OR REPLACE FUNCTION listarCondicional(consulta_id_busca integer) RETURNS SETOF record
AS $$
BEGIN
	RETURN QUERY SELECT nome, tag_html, condicao
	FROM condicional WHERE id_consulta = consulta_id_busca;
RETURN;
END; $$ LANGUAGE 'plpgsql' VOLATILE;

-- exemplo de utilização --
SELECT * FROM listarCondicional(1) AS ("Campo" varchar(30), nome varchar(30), condicao varchar(50));


select * from consulta;
select * from condicional;

delete from consulta;
delete from condicional;
